package client_package;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.JLabel;

import client_package.Controleur.Statut;

public class VueSalon extends VueAvecBar {
	private static final long serialVersionUID = 1L;
	
	private JPanel contentPane;
	private JTable table;
	

	public VueSalon(Controleur c) {
		super(c);
		setResizable(false);
		setBounds(100, 100, 986, 609);
		setTitle("Salon");
		
		JMenu mnOption = new JMenu("Option");
		getJMenuBar().add(mnOption, 1);
		
		JMenuItem mntmGrerMonCompte = new JMenuItem("Gérer mon compte");
		mnOption.add(mntmGrerMonCompte);
		mntmGrerMonCompte.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().vueModifInfo();
			}
		});
		
		JMenuItem mntmDconnexion = new JMenuItem("Déconnexion");
		getMnApplication().add(mntmDconnexion, 0);
		mntmDconnexion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().deconnexion();
			}
		});
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setBounds(12, 12, 680, 501);
		contentPane.add(scrollPane);
		
		
		SalonTableModel model = new SalonTableModel();
		model.addColumn("Login");
		model.addColumn("Nom");
		model.addColumn("Prénom");
		model.addColumn("Sexe");
		model.addColumn("Statut");
		model.addColumn("Langue");
		
		table = new JTable(model);
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scrollPane.setViewportView(table);
		
		JButton btnDconnexion = new JButton("Déconnexion");
		btnDconnexion.setBounds(50, 525, 145, 25);
		contentPane.add(btnDconnexion);
		btnDconnexion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().deconnexion();
			}
		});
		
		JButton btnCommuniquer = new JButton("Communiquer");
		btnCommuniquer.setBounds(244, 525, 123, 25);
		contentPane.add(btnCommuniquer);
		btnCommuniquer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int numLigne = table.getSelectedRow();
				String login = null;
				Statut stat = null;
				if(numLigne != -1) {
					login = ((String)table.getValueAt(numLigne, 0));
					stat = Statut.valueOf((String)table.getValueAt(numLigne, 4));
				}
				getControleur().communiquer(login, stat);
			}
		});
		
		JLabel lblMonLogin = new JLabel("Mon login : " + c.getLogin());
		lblMonLogin.setBounds(717, 57, 183, 15);
		contentPane.add(lblMonLogin);
	}
	
	public void alimente(String login, String nom, String prenom, String sexe, String statut, String langue) {
		// NE PAS EFFACER -> METTRE EN COMMENTAIRE
		////System.out.println("login : " + login + " nom : " + nom + " prenom : " + prenom + " sexe : " + sexe + " statut  : " + statut + "langue : " + langue);

		// Ajoute la ligne dans la JTable si différent de lui-même
		if(!login.equals(getControleur().getLogin())) {
			SalonTableModel model = ((SalonTableModel)table.getModel());
			String[] ligne = {login, nom, prenom, sexe, statut, langue};
			model.addRow(ligne);
		}
	}
	
	public void raz() {
		// remise à zero de la JTable
		SalonTableModel model = ((SalonTableModel)table.getModel());
		model.setRowCount(0);
	}
	 
}
